<?php

namespace Gds\ArticleBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Gds\ArticleBundle\Entity\Stock
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Gds\ArticleBundle\Entity\StockRepository")
 */
class Stock {

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\LigneTicketCaisse", mappedBy="stock")
     */
    private $lignes_tickets; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\ArticleBundle\Entity\LigneBonTransfert", mappedBy="stockSource")
     */
    private $lignesTransfertSource; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\ArticleBundle\Entity\LigneBonTransfert", mappedBy="stockDestination")
     */
    private $lignesTransfertDestination; // Ici commentaires prend un "s", car un article a plusieurs commentaires !

    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\StockAchat", mappedBy="stock")
     */
    private $stockAchats; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\LigneBonLivraisonFournisseur", mappedBy="stock")
     */
    private $blFournisseurLignes; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    
    /**
     * @ORM\ManyToOne(targetEntity="Gds\ArticleBundle\Entity\Article", inversedBy="stocks")
     * @ORM\JoinColumn(nullable=false)
     */
    private $article;

    /**
     * @ORM\ManyToOne(targetEntity="Gds\ArticleBundle\Entity\Departement", inversedBy="stocks")
     * @ORM\JoinColumn(nullable=false)
     */
    private $departement;

    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var float $quantite_blanc
     *
     * @ORM\Column(name="quantite_blanc", type="decimal", scale=3)
     */
    private $quantite_blanc;

    /**
     * @var float $quantite_noir
     *
     * @ORM\Column(name="quantite_noir", type="decimal", scale=3)
     */
    private $quantite_noir;

    /**
     * @var float $quantite_min
     *
     * @ORM\Column(name="quantite_min", type="decimal", scale=3)
     */
    private $quantite_min;

    public function getTotalQuantite() {
        return $this->quantite_blanc + $this->quantite_noir;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId() {
        return $this->id;
    }


    /**
     * Set quantite_noir
     *
     * @param float $quantiteNoir
     * @return Stock
     */
    public function setQuantiteNoir($quantiteNoir) {
        $this->quantite_noir = $quantiteNoir;

        return $this;
    }

    /**
     * Get quantite_noir
     *
     * @return float 
     */
    public function getQuantiteNoir() {
        return $this->quantite_noir;
    }

    public function getQuantite(){
        return $this->quantite_blanc+$this->quantite_noir;
    }
    /**
     * Set quantite_min
     *
     * @param float $quantiteMin
     * @return Stock
     */
    public function setQuantiteMin($quantiteMin) {
        $this->quantite_min = $quantiteMin;

        return $this;
    }

    /**
     * Get quantite_min
     *
     * @return float 
     */
    public function getQuantiteMin() {
        return $this->quantite_min;
    }

    /**
     * Set article
     *
     * @param Gds\ArticleBundle\Entity\Article $article
     * @return Stock
     */
    public function setArticle(\Gds\ArticleBundle\Entity\Article $article) {
        $this->article = $article;

        return $this;
    }

    /**
     * Get article
     *
     * @return Gds\ArticleBundle\Entity\Article 
     */
    public function getArticle() {
        return $this->article;
    }

    public function getReference() {
        return $this->getArticle()->getReference();
    }

    public function getDesignation() {
        return $this->getArticle()->getDesignation();
    }

    /**
     * Set departement
     *
     * @param Gds\ArticleBundle\Entity\Departement $departement
     * @return Stock
     */
    public function setDepartement(\Gds\ArticleBundle\Entity\Departement $departement) {
        $this->departement = $departement;

        return $this;
    }

    /**
     * Get departement
     *
     * @return Gds\ArticleBundle\Entity\Departement 
     */
    public function getDepartement() {
        return $this->departement;
    }

    /**
     * Constructor
     */
    public function __construct() {
        $this->setQuantiteBlanc(0);
        $this->setQuantiteNoir(0);
        $this->setQuantiteMin(0);
    }

    public function addStockAchat(\Gds\AchatBundle\Entity\StockAchat $stockAchats) {
        $this->stockAchats[] = $stockAchats;

        return $this;
    }

    /**
     * Remove stockAchats
     *
     * @param Gds\AchatBundle\Entity\StockAchat $stockAchats
     */
    public function removeStockAchat(\Gds\AchatBundle\Entity\StockAchat $stockAchats) {
        $this->stockAchats->removeElement($stockAchats);
    }

    /**
     * Get stockAchats
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getStockAchats() {
        return $this->stockAchats;
    }

    /**
     * Add blFournisseurLignes
     *
     * @param Gds\AchatBundle\Entity\LigneBonLivraisonFournisseur $blFournisseurLignes
     * @return Stock
     */
    public function addBlFournisseurLigne(\Gds\AchatBundle\Entity\LigneBonLivraisonFournisseur $blFournisseurLignes) {
        $this->blFournisseurLignes[] = $blFournisseurLignes;

        return $this;
    }

    /**
     * Remove blFournisseurLignes
     *
     * @param Gds\AchatBundle\Entity\LigneBonLivraisonFournisseur $blFournisseurLignes
     */
    public function removeBlFournisseurLigne(\Gds\AchatBundle\Entity\LigneBonLivraisonFournisseur $blFournisseurLignes) {
        $this->blFournisseurLignes->removeElement($blFournisseurLignes);
    }

    /**
     * Get blFournisseurLignes
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getBlFournisseurLignes() {
        return $this->blFournisseurLignes;
    }

    /**
     * Add lignesTransfertSource
     *
     * @param Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertSource
     * @return Stock
     */
    public function addLignesTransfertSource(\Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertSource) {
        $this->lignesTransfertSource[] = $lignesTransfertSource;

        return $this;
    }

    /**
     * Remove lignesTransfertSource
     *
     * @param Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertSource
     */
    public function removeLignesTransfertSource(\Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertSource) {
        $this->lignesTransfertSource->removeElement($lignesTransfertSource);
    }

    /**
     * Get lignesTransfertSource
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getLignesTransfertSource() {
        return $this->lignesTransfertSource;
    }

    /**
     * Add lignesTransfertDestination
     *
     * @param Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertDestination
     * @return Stock
     */
    public function addLignesTransfertDestination(\Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertDestination) {
        $this->lignesTransfertDestination[] = $lignesTransfertDestination;

        return $this;
    }

    /**
     * Remove lignesTransfertDestination
     *
     * @param Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertDestination
     */
    public function removeLignesTransfertDestination(\Gds\ArticleBundle\Entity\LigneBonTransfert $lignesTransfertDestination) {
        $this->lignesTransfertDestination->removeElement($lignesTransfertDestination);
    }

    /**
     * Get lignesTransfertDestination
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getLignesTransfertDestination() {
        return $this->lignesTransfertDestination;
    }

    public function __toString() {
        return (String) $this->getId();
    }

    /**
     * Add lignes_tickets
     *
     * @param \Gds\VenteBundle\Entity\LigneTicketCaisse $lignesTickets
     * @return Stock
     */
    public function addLignesTicket(\Gds\VenteBundle\Entity\LigneTicketCaisse $lignesTickets) {
        $this->lignes_tickets[] = $lignesTickets;

        return $this;
    }

    /**
     * Remove lignes_tickets
     *
     * @param \Gds\VenteBundle\Entity\LigneTicketCaisse $lignesTickets
     */
    public function removeLignesTicket(\Gds\VenteBundle\Entity\LigneTicketCaisse $lignesTickets) {
        $this->lignes_tickets->removeElement($lignesTickets);
    }

    /**
     * Get lignes_tickets
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getLignesTickets() {
        return $this->lignes_tickets;
    }


    /**
     * Set quantite_blanc
     *
     * @param float $quantiteBlanc
     * @return Stock
     */
    public function setQuantiteBlanc($quantiteBlanc)
    {
        $this->quantite_blanc = $quantiteBlanc;

        return $this;
    }

    /**
     * Get quantite_blanc
     *
     * @return float 
     */
    public function getQuantiteBlanc()
    {
        return $this->quantite_blanc;
    }
}
